package py.cursoweb.controller;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import py.cursoweb.model.Compra;

public class CompraManager {
	private static ArrayList<Compra> compras = null;
	
	public CompraManager() {
		if (compras == null) {
			compras = new ArrayList<Compra>();
		}
	}
	
	public List<Compra> getCompras() throws Exception {
		Session session = getSession();
		Transaction trans = session.beginTransaction();
		List<Compra> compras;
		
		try {			
			compras = session.createQuery("from Compra").list();
			trans.commit(); 
		}catch(Exception ex) {
			ex.printStackTrace();
			trans.rollback();
			
			throw ex;
		}			 
		
		return compras;
	}
	
	public void addCompra(Compra compra) {
		compras.add(compra);
	}
	
	public Compra getCompra(Integer id) {
		for(Compra compra : compras) {
			if (compra.getId().equals(id))
				return compra;
		}
		
		return null;
	}
	
	
	//acceso a base de datos
	public void saveCompra(Compra compra) throws Exception {
		Session session = getSession();
		Transaction trans = session.beginTransaction();
		
		try {			
			session.saveOrUpdate(compra);
			trans.commit();
		}catch(Exception ex) {
			ex.printStackTrace();
			trans.rollback();
			
			throw ex;
		}			
	}
	
	public void deleteCompra(Compra compra) throws Exception {
		Session session = getSession();
		Transaction trans = session.beginTransaction();
		
		try {			
			session.delete(compra);
			trans.commit();
		}catch(Exception ex) {
			ex.printStackTrace();
			trans.rollback();
			
			throw ex;
		}			
	}
	
	public Session getSession() {
		return HibernateUtil.getSessionFactory().getCurrentSession();
	}

}
